import math
import numpy as np
import numpy.random as npr
#Square-Root Diffusion(CIR模型)
x0=0.05  #初始利率
kappa=3.0 #均值回归系数
theta=0.02 #长期均值项
sigma=0.1  #利率的波动率
T=2.0  #年化时间长度
I=10000  #模拟的次数
M=252*2  #年化时间分段数目
dt=T/M  #模拟的每小步步长（按日）
def srd_euler():
    xh=np.zeros((M+1,I))
    x1=np.zeros_like(xh)
    xh[0]=x0
    x1[0]=x0
    for t in range(1,M+1):

        xh[t]=(xh[t-1]+kappa*(theta-np.maximum(xh[t-1],0))*dt+sigma*np.sqrt(np.maximum(xh[t-1],0))*np.sqrt(dt)*npr.standard_normal(I))
    x1=np.maximum(xh,0)
    return x1
x1=srd_euler()